{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4 细调整树的参数：max_depth & min_child_weight"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# read in data，数据在xgboost安装的路径下的demo目录,现在我们将其copy到当前代码下的data目录\n",
    "dpath = './data/'\n",
    "dtrain = xgb.DMatrix(dpath + 'RentListingInquries_FE_train.bin')\n",
    "dtest = xgb.DMatrix(dpath + 'RentListingInquries_FE_test.bin')\n",
    "train = pd.read_csv(dpath + 'RentListingInquries_FE_train.csv')\n",
    "test = pd.read_csv(dpath + 'RentListingInquries_FE_test.csv')\n",
    "\n",
    "\n",
    "\n",
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 准备交叉验证\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一轮参数调整得到的n_estimators最优值（227），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "细调，步长为1.粗调的结果为：{'min_child_weight': 5, 'max_depth': 7}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [6, 7, 8], 'min_child_weight': [4, 5, 6]}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_depth = [6,7,8]\n",
    "min_child_weight = [4,5,6]\n",
    "param_test4 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test4\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:667: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58723, std: 0.00349, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.58783, std: 0.00224, params: {'max_depth': 6, 'min_child_weight': 5},\n",
       "  mean: -0.58773, std: 0.00307, params: {'max_depth': 6, 'min_child_weight': 6},\n",
       "  mean: -0.59007, std: 0.00271, params: {'max_depth': 7, 'min_child_weight': 4},\n",
       "  mean: -0.58776, std: 0.00241, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.58898, std: 0.00265, params: {'max_depth': 7, 'min_child_weight': 6},\n",
       "  mean: -0.59218, std: 0.00336, params: {'max_depth': 8, 'min_child_weight': 4},\n",
       "  mean: -0.59142, std: 0.00235, params: {'max_depth': 8, 'min_child_weight': 5},\n",
       "  mean: -0.58993, std: 0.00190, params: {'max_depth': 8, 'min_child_weight': 6}],\n",
       " {'max_depth': 6, 'min_child_weight': 4},\n",
       " -0.58722977506296525)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb4 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=227,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "gsearch4 = GridSearchCV(xgb4, param_grid = param_test4, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch4.fit(X_train , y_train)\n",
    "\n",
    "gsearch4.grid_scores_, gsearch4.best_params_,     gsearch4.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "gsearch4.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.587230 using {'max_depth': 6, 'min_child_weight': 4}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb642a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch4.best_score_, gsearch4.best_params_))\n",
    "test_means = gsearch4.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch4.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch4.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch4.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch4.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
